﻿#include <iostream>
using namespace std;
//
//class A
//{
//public:
//	A(int a)
//		:_a(a)
//	{}
//private:
//	int _a;
//};
//class B
//{
//public:
//	B(int x, int& y,int z)
//		:_x(x)
//		,_y(y)
//		,_b(z)//没有写默认构造函数，只是写了一个需要传参的构造函数
//	{}
//private:
//	const int _x;
//	int& _y;
//	A _b;
//};
//
//int main()
//{
//	int n = 1;
//	B b1(10,n,5);
//	return 0;
//}

//class A
//{
//public:
//	A() 
//	{
//		++_count; 
//	}
//	A(const A& a) 
//	{
//		++_count; 
//	}
//	~A() 
//	{
//		--_count; 
//	}
//
//	static int GetCount()//静态成员函数
//	{
//		return _count;
//	}
//private:
//	static int _count;//静态成员变量
//};
//
//int A::_count = 0;
//A aa1;
//void func()
//{
//	static A aa3;
//	cout << __LINE__ << ":" << A::GetCount() << endl;
//}
//
//int main()
//{
//	cout << __LINE__ << ":" << A::GetCount() << endl;
//	A aa2;
//	func();
//	func();
//}

class A
{public:
	A(int a = 0)
		:_a(a)
	{
		cout << "A(int a = 0)" << endl;
	}

	~A()
	{
		cout << "~A()" << endl;
	}
private:
	int _a;
};

int main()
{
	A aa1(1);//有名对象，声明周期在函数局部域
	A(2);    //匿名对象，生命周期在当前行

	//A& aa2 = A(3);类似于临时对象，具有常性
	const A& aa2 = A(3);
	return 0;
}